Story1 소켓 작성

1 프로토콜 스택 내부 구성

이번에 정리할 프로토콜 스택은 아래 그램과 같이 OS에 내장된 네트워크 제어용 소프트웨어이다.

TCP와 UDP

  • TCP는 브라우저 메일 등 일반 어플리케이션이 데이터를 송수신할때 사용
  • UDP는 서버에 대한 조회 등 짧은 제어용 데이터를 송.수신할때 사용

IP 프로토콜

패킷 송.수신 동작 제어하는 부분 패킷이란 데이터를 운반할 때 데이터를 작게 나눠놓은 것

IP 안에는 ICMP와 ARP라는 프로토콜을 다루는 부분이 포함

ICMP는 패킷 운반할 때 발생하는 오류 통지하거나 제어용 메세지를 통지 ARP는 IP 주소에 대응하는 이더넷의 MAC 주소 조사에 사용

LAN Driver

LAN 어뎁터의 하드웨어를 제어

2 소켓의 실체는 통신 제어용 제어 정보

프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역을 가지고 있음 통신 동작을 제어하기 위한 제어 정보를 기록

  • 통신 상대의 IP 주소
  • 포트 번호
  • 통신 동작이 어떤 상태인가 등을 기록

제어 정보소켓의 실체라고 할 수 있다.

프로토콜 스택은 이 제어 정보를 참조하면서 동작 예를 들어, 데이터를 송신할 때는

  1. 소켓에 기록되어 있는 상대측의 IP주나 포트 번호를 보고
  2. 그 IP 주소와 포트 번호를 대상으로 데이터 송신
  3. 응답이 돌아오는지의 여부와 송신 동작 후의 경과 시간을 기록

3 Socket을 호출했을 때의 동작

브라우저가 Socket 라이브러리 안에 있는 socket이나 connect를 호출하면 어떤 동작을 할까?

위의 그림과 같이 socket()을 호출하면 프로토콜 스택은 의뢰에 따라 소켓을 생성

이때 프로토콜 스택은 소켓 한 개 분량의 메모리 영역을 확보한 뒤 초기 상태라는 것을 메모리 영역에 기록

소켓이 생성되면 디스크립터를 애플리케이션에게 알려줌(어떤 소켓인지 알려주는 번호표와 같음)

디스크립터를 통해 여러 소켓 중 사용하고 있는 소켓을 알 수 있다.

소켓에는

  • 누구와 누가 통신하고 있는지
  • 어떤 상태로 있는지 등이 기록되어 있어서 통신 상대의 정보를 애플리케이션에서 일일이 통지받을 필요가 없어짐.